package sv.com.action.comun;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.commons.beanutils.LazyDynaBean;

import com.opensymphony.xwork2.ActionContext;

import sv.com.action.administracion.OpcionesXRolAction;
import sv.com.modelo.seguridad.rems.OpcionMenu;
import sv.com.modelo.seguridad.rems.RolXOpcionMenu;
import sv.com.objetos.auxiliares.Constantes;
import sv.com.objetos.auxiliares.MenuItem;
import sv.com.objetos.auxiliares.UsuarioLogueado;
import sv.com.servicio.generico.DaoGenerico;

public class MenuAction extends ComunAction {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	
	    public String mapaDeMetodos() throws Exception {
	        armarMenu();
	        return null;
	    }

	 public MenuAction(DaoGenerico servicioGenerico){
			this.servicioGenerico = servicioGenerico;
		}	
	 
	    public void armarMenu(){
	      //  UsuarioLogueado ul;
	        try {
	           // DelegateEjb del = new DelegateEjb();
	            UsuarioLogueado ul = obtenerUsuarioLogueado(getServletRequest());
	            
	            String query = "select oxr from RolXOpcion_Menu oxr where oxr.rol.idRol=:rol order by oxr.opcionMenu.nivel, oxr.opcionMenu.orden  desc";
	            HashMap<String, Object> k = new HashMap<String, Object>();
	            k.put("rol",ul.getIdRol());
	            List<RolXOpcionMenu> lista = servicioGenerico.realizarBusqueda(query, k);
	            //List listaItems = del.ejecutarQuery(query);
	            //ArrayList lista = Utilidades.object2Array(listaItems);
	            List<MenuItem> listaMenu = new ArrayList<MenuItem>();
	            List<MenuItem> listaMenuAux = new ArrayList<MenuItem>();
	            String idOpc = "";
	            String desOpc = "";
	            String opcPad = "";
	            String codSis = "";
	            String url = "";
	            
	            for (RolXOpcionMenu objeto:lista) {
	            	opcPad="";
	            	if(objeto.getOpcionMenu().getOpcionMenu()!=null&&objeto.getOpcionMenu().getOpcionMenu().longValue()>0)
	            		opcPad=objeto.getOpcionMenu().getOpcionMenu().toString();
	                MenuItem mI = new MenuItem();
	                mI.setIdMenu(objeto.getOpcionMenu().getIdOpcionMenu().toString());
	                
	                mI.setIdPadre(opcPad);
	                mI.setMenuItem(objeto.getOpcionMenu().getDescripcion());
	                mI.setUrl(objeto.getOpcionMenu().getUrl());
	                listaMenu.add(mI);
	                listaMenuAux.add(mI);
	            }
	            String html = "<ul id='main-nav' >";
	            List<MenuItem> listaDefinitiva = new ArrayList<MenuItem>();
	            for (MenuItem itemPivote : listaMenu) {
	                for (MenuItem itemAux : listaMenuAux) {
	                    if ((!itemAux.getIdPadre().equals("")) && itemPivote.getIdMenu().equals(itemAux.getIdPadre())) {
	                        itemPivote.getHijos().add(itemAux);
	                    }
	                }
	                listaDefinitiva.add(itemPivote);
	            }
	            for (MenuItem mi : listaDefinitiva) {
	                if (mi.getIdPadre().equals("")) {
	                    html = preOrden(mi, html);
	                }
	            }
	            html += "</ul>";
	            enviarANavegador(getServletResponse(), html);
	        } catch (Exception ex) {
	            ex.printStackTrace();
	        }
	    }
	    public String preOrden(MenuItem menuItem,String ret){
	        if(menuItem != null){
	            if(menuItem.getHijos().size()==0){

                    ret += "<li ><a  id=\""+menuItem.getIdMenu() +"\" onClick='javascript:cargarPagina(\""+menuItem.getIdMenu()+"\"," +"\""+menuItem.getUrl()+"\")'>"+menuItem.getMenuItem()+"</a>";
//	                if(flag == 0)
//	                    ret += "<li><span><a id=\""+menuItem.getIdMenu() +"\" onClick='javascript:cargarPaginaCentral(\""+menuItem.getIdMenu()+"\"," +"\""+menuItem.getUrl()+"\")'>"+menuItem.getMenuItem()+"</span></a>";
//	                else{
//	                  
//	                        ret += "<li><span><a id=\""+menuItem.getIdMenu() +"\">"+menuItem.getMenuItem()+"</span></a>";
//	                }
	            }else{
	                ret += "<li><a class='nav-top-item'>"+menuItem.getMenuItem()+"</a>";
	            }
	            
	            ret += "<ul>";
	            
	            for(MenuItem item: menuItem.getHijos()){
	                ret = preOrden(item,ret);
	            }
	            ret += "</ul>";
	            ret += "</li>";
	        }
	        return ret;
	    }
}
